home *** CD-ROM | disk | FTP | other *** search
/ START Magazine / START VOL 4 NO 1.st / POGOSRC.ARC / STTMULT.ASM < prev    next >
Encoding:
Assembly Source File  |  1985-11-20  |  1.0 KB  |  74 lines

  1.  
  2.     cseg
  3.     public    _tmult
  4. _tmult:
  5.     move.w    4(a7),d0
  6.     muls    6(a7),d0
  7.     asl.l    #2,d0
  8.     rts
  9.  
  10.     public _itmult
  11.     public    _scale_mult
  12. _scale_mult:
  13. _itmult:
  14.     move.w 4(a7),d0
  15.     muls 6(a7),d0
  16.     asl.l #2,d0
  17.     swap d0 
  18.     ext.l d0
  19.     rts
  20.  
  21. ;    signed scale by  sscale_by( unscaled, p, q)
  22.     public    _sscale_by
  23.     public  _rscale_by
  24. _sscale_by:
  25.     move.w 6(sp),d0
  26.     move.w 8(sp),d1
  27.     cmp.w d1,d0
  28.     beq.s ssb_trivial
  29.     muls 4(sp),d0
  30.     divs d1,d0
  31.     rts
  32. ssb_trivial:
  33.     move.w 4(sp),d0
  34.     rts
  35.  
  36. ;    unsigned scale by  uscale_by( unscaled, p, q)
  37.     public    _uscale_by
  38. _uscale_by:
  39. _rscale_by:
  40.     move.w 6(sp),d0
  41.     move.w 8(sp),d1
  42.     cmp.w d1,d0
  43.     beq.s usb_trivial
  44.     mulu 4(sp),d0
  45.     divu d1,d0
  46.     rts
  47. usb_trivial:
  48.     move.w 4(sp),d0
  49.     rts
  50.  
  51. ;    unsigned scale by  ruscale_by( unscaled, p, q)
  52.     public    _ruscale_by
  53. _ruscale_by:
  54.     move.w 6(sp),d0
  55.     move.w 8(sp),d1
  56.     cmp.w d1,d0
  57.     beq.s usb_trivial
  58.     mulu 4(sp),d0
  59.     move.w    d1,d2
  60.     lsr.w    #1,d2
  61.     ext.l    d2
  62.     add.l    d2,d0
  63.     divu d1,d0
  64.     rts
  65.  
  66.     public _mult_to_long
  67. _mult_to_long:
  68.     move.w    4(sp),d0
  69.     muls    6(sp),d0
  70.     rts
  71.  
  72.     END
  73.  
  74.